//
//  BaseRefreshViewController.h
//  nonghubao
//
//  Created by chongqing642 on 13-3-13.
//  Copyright (c) 2013年 Chongqing Nonghubao Co., Ltd. All rights reserved.
//
//  Summary
//  需要显示下拉刷新和加载更多的view所应该继承的类

#import <UIKit/UIKit.h>
#import "EGORefreshTableHeaderView.h"

//在非tableview的环境下，要实现刷新功能，就要实现此代理
@protocol BaseRefreshViewControllerDelegate <NSObject>

@optional
//由子类实现的刷新数据的方法（下拉）
- (void)reloadDataSource;

//由子类实现的刷新数据的方法（加载更多）
- (void)refresh;

@end

@interface BaseRefreshViewController : UITableViewController<EGORefreshTableHeaderDelegate>
{
    EGORefreshTableHeaderView*      _refreshHeaderView;
    UIView*                         _refreshFooterView;
    BOOL                            _reloading;
    UIActivityIndicatorView*        _activity;
    UILabel*                        _reloadingLabel;
    BOOL                            _isFooterRefresh;
    UIButton*                       _refreshButton;
}
@property (nonatomic) BOOL isFooterRefresh;
@property (nonatomic, setter = setDisableTopRefresh:) BOOL disableTopRefresh;
@property (nonatomic, setter = setDisableBottomRefresh:) BOOL disableBottomRefresh;

@property (nonatomic, strong) id<BaseRefreshViewControllerDelegate> delegate;

//子类在实现获取新数据前，应该重写并先调用父类的此方法
- (void)reloadTableViewDataSource;

//子类在实现加载更多button的点击事件时，应该先调用父类的此方法，完成点击加载更多之时的页面状态，再实现自定义
- (void)refreshButtonEvent:(id)sender;

//子类在加载更多后成功获取数据后，应先调用此方法，恢复到点击加载更多之前的页面状态
- (void)stopRefresh;

//将父类的scrollview的代理暴露给子类，解决子类view不响应父类view的scrollview的代理方法的问题
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
@end
